home *** CD-ROM | disk | FTP | other *** search
- // Definitions for MIOTDREM
- // ------------------------
- //
- // Portions Copyright (c) 1991, Borland International. All rights reserved.
- // Copyright (c) 1991, Stuart G. Phillips. All rights reserved.
- //
- // Permission is granted for non-commercial use of this software.
- // You are expressly prohibited from selling this software in any form,
- // distributing it with another product, or removing this notice.
- // THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- // IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- // WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- // PURPOSE.
- //
- // Literal definitions for MIOTDREM interface
- //
-
- // General literals
-
- #define TRUE 1
- #define FALSE 0
- #define NULL 0
-
- // MIOTDR configuration literals
-
- #define TDSCC (SCC2|CHANB) // Selects the SCC and channel to be
- // used for the remote interface.
-
- #define BUFLEN (256 + sizeof(union td_omsg) + sizeof(struct td_imsg))
-
- // TDREMOTE literals
-
- #define TD_VERSION 2 // Protocol version
- #define TD_80186 1 // Processor type code
- #define NO_8087 0 // No numeric coprocessor
- #define VECCOUNT 0x34 // Number of vectors
-
- #define TD_SYNC 0x41 // Initial sync-up
- #define TD_SENDFILE 0x42 // Send file to remote
- #define TD_GETFINFO 0x43 // Get date/time of remote file
- #define TD_GO 0x44 // Start execution
- #define TD_STOP 0x45 // Stop execution
- #define TD_READMEM 0x46 // Read memory
- #define TD_WRITEMEM 0x47 // Set memory
- #define TD_READIO 0x48 // Read IO
- #define TD_WRITEIO 0x49 // Write IO
- #define TD_READREGS 0x4a // Read processor registers
- #define TD_WRITEREGS 0x4b // Write processor registers
- #define TD_READFP 0x4c // Read floating point status
- #define TD_WRITEFP 0x4d // Write floating point status
- #define TD_LOADPROG 0x4e // Load program
- #define TD_MAKEPSP 0x4f // Make PSP
- #define TD_PROGFREE 0x50 // Free loaded program
- #define TD_MEMSET 0x51 // Set memory
- #define TD_MEMCPY 0x52 // Copy memory
- #define TD_GETPINFO 0x53 // Get program information
- #define TD_OVLHOOK 0x54 // Set Pascal overlay hook
- #define TD_BYE 0x55 // End of session
-
-
- // Stop codes
-
- #define TD_BRK0 18 // Divide by zero interrupt
- #define TD_BRK1 2 // Single step interrupt
- #define TD_BRK3 3 // Breakpoint interrupt
- #define TD_TERM 4 // Program termination
- #define TD_KEYINTR 10 // Keyboard interrupt (BREAK)
- #define TD_RUNNING 6 // Not stopped, running
- #define TD_SSTOP TD_STOP // User break
-
- // Structure definitions
-
- // CPU structures
-
- struct f {
- unsigned cf:1; // Carry flag
- unsigned :1; // Reserved
- unsigned pf:1; // Parity flag
- unsigned :1; // Reserved
- unsigned af:1; // Auxiliary carry flag
- unsigned :1; // Reserved
- unsigned zf:1; // Zero flag
- unsigned sf:1; // Sign flag
- unsigned tf:1; // Trap flag
- unsigned ef:1; // Interrupt enable flag
- unsigned df:1; // Direction flag
- unsigned of:1; // Overflow flag
- unsigned fill:4;
- };
-
-
- struct cpu {
- union {
- struct wr {
- unsigned int uax, ax_32; // Word registers
- unsigned int ubx, bx_32;
- unsigned int ucx, cx_32;
- unsigned int udx, dx_32;
- } w;
- struct br {
- unsigned char al, ah, a_32[2]; // Byte registers
- unsigned char bl, bh, b_32[2];
- unsigned char cl, ch, c_32[2];
- unsigned char dl, dh, d_32[2];
- } b;
- } g_regs;
- unsigned int usp, usp_32; // Stack pointer
- unsigned int ubp, ubp_32; // Base pointer
- unsigned int usi, usi_32; // Source Index
- unsigned int udi, udi_32; // Destination Index
- struct f flags; // Processor flags
- unsigned int offset;
- unsigned int segment; // CS and IP
- unsigned int uds; // Data segment
- unsigned int uss; // Stack segment
- unsigned int ues; // Extra segment
- unsigned int ufs; // 80386 FS register (unused)
- unsigned int ugs; // 80386 GS register (unused)
- };
-
-
- // Inbound (from TD) message formats
-
- struct td_imsg {
- unsigned char cmd;
- union {
- struct { unsigned char count;
- unsigned int offset;
- unsigned int segment;
- } td_readmem;
- struct { unsigned char count;
- unsigned int offset;
- unsigned int segment;
- unsigned char data[1];
- } td_writemem;
- struct { unsigned int port;
- unsigned char word_or_byte;
- } td_readio;
- struct { unsigned int port;
- unsigned char word_or_byte;
- unsigned int value;
- } td_writeio;
- struct { struct cpu regs;
- } td_write_regs;
- struct { unsigned int offset;
- unsigned int segment;
- unsigned int count;
- unsigned char value;
- } td_memset;
- struct { unsigned int src_offset;
- unsigned int src_segment;
- unsigned int dst_offset;
- unsigned int dst_segment;
- unsigned int count;
- } td_memcopy;
- } data;
- };
-
- // Outboard (to TD) message formats
-
- union td_omsg {
- struct { unsigned char code;
- unsigned char cpu;
- unsigned char i8087;
- unsigned char version;
- } td_sync;
- struct { unsigned char state;
- unsigned short term_code;
- unsigned int i8087;
- } td_stopped;
- struct { unsigned char status;
- } td_sendfile;
- struct { long filetime;
- } td_getfinfo;
- struct { unsigned char data[1];
- } td_readmem;
- struct { unsigned int value;
- } td_readio;
- struct { struct cpu regs;
- } td_readregs;
- struct { unsigned int status;
- unsigned int pid;
- unsigned int i8087;
- } td_loadprog;
- struct {
- unsigned int mem_dos;
- unsigned int mem_debugger;
- unsigned int mem_symbols;
- unsigned int mem_program;
- unsigned int mem_available;
- unsigned int ems_dos;
- unsigned int ems_debugger;
- unsigned int ems_program;
- unsigned int ems_available;
- unsigned int dos_version;
- unsigned char hardware_bkpts;
- unsigned char ems_present;
- unsigned char intflags[VECCOUNT];
- } td_getpinfo;
- };
-
-
- // Externals
-
- // In COMM.C
-
- extern void send(unsigned char *,unsigned short);
- extern void send_ack();
- extern void comm_init();
-
- // In MACHINE.C
-
- extern int go_program();
- extern void read_regs();
- extern void write_regs(struct cpu *);
- extern void mc_stop();
- extern void mc_brk0();
- extern void mc_brk1();
- extern void mc_brk3();
-
- // In MEMIO.C
-
- extern void read_memory(unsigned int,unsigned int,unsigned char);
- extern void write_memory(unsigned int,unsigned int,unsigned char,
- unsigned char *);
- extern void read_io(unsigned int,unsigned char);
- extern void write_io(unsigned int,unsigned char,unsigned int);
-
- extern void set_mem(unsigned int,unsigned int,unsigned int,
- unsigned char);
- extern void copy_mem(unsigned int,unsigned int,unsigned int,
- unsigned int, unsigned int);
-
-
- // In MAIN.C
-
- extern unsigned char tx_buffer[BUFLEN];
- extern unsigned char rx_buffer[BUFLEN];
- extern struct td_imsg *msgq;
-